<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="MessageContract" targetNamespace="http://AdventureWorks/Cinema/Server/DataTransferObjects/MessageContract.xsd" elementFormDefault="qualified" xmlns="http://AdventureWorks/Cinema/Server/DataTransferObjects/MessageContract.xsd" xmlns:mstns="http://AdventureWorks/Cinema/Server/DataTransferObjects/MessageContract.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://AdventureWorks/Cinema/Server/DataTransferObjects/DataContract.xsd" xmlns:clr="http://microsoft.com/wsdl/types/">
  <xs:import namespace="http://AdventureWorks/Cinema/Server/DataTransferObjects/DataContract.xsd" schemaLocation="DataContract.xsd" />
  <xs:import namespace="http://microsoft.com/wsdl/types/" schemaLocation="Guid.xsd" />
  <xs:element name="GetMoviesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MovieList" type="dc:MovieInfo" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetRoomsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="RoomList" type="dc:Room" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetUserDataResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="UserData" type="dc:User" minOccurs="0" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetNewsItemsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="NewsItemList" type="dc:NewsItem" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetFreeSeatsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="FreeSeats" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetUsersForNewsletterResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="UserList" type="dc:UserInfo" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMoviesByUserInterestsRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="UserId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetUserDataRequest">
    <xs:complexType>
      <xs:sequence>
      </xs:sequence>
      <xs:attribute name="UserId" type="clr:guid" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetFreeSeatsRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="PerformanceId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="BuyTicketsRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="PerformanceId" type="clr:guid" />
        <xs:element name="Quantity" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateMovieRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Movie" type="dc:Movie" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateMovieRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Movie" type="dc:Movie" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteMovieRequest">
    <xs:complexType>
      <xs:sequence>
      </xs:sequence>
      <xs:attribute name="MovieId" type="clr:guid" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:element name="CreatePerformanceRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Performance" type="dc:Performance" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdatePerformanceRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Performance" type="dc:Performance" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeletePerformanceRequest">
    <xs:complexType>
      <xs:sequence>
      </xs:sequence>
      <xs:attribute name="PerformanceId" type="clr:guid" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateNewsItemRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="NewsItem" type="dc:NewsItem" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateNewsItemRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="NewsItem" type="dc:NewsItem" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteNewsItemRequest">
    <xs:complexType>
      <xs:sequence>
      </xs:sequence>
      <xs:attribute name="NewsItemId" type="clr:guid" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateRoomRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Room" type="dc:Room" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateRoomRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Room" type="dc:Room" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteRoomRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="RoomId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateUserRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="User" type="dc:User" />
        <xs:element name="Password" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateUserRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="User" type="dc:User" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteUserRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="UserId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMovieRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MovieId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMovieResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Movie" type="dc:Movie" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="RateMovieRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MovieId" type="clr:guid" />
        <xs:element name="Rating" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPerformanceRequest">
    <xs:complexType>
      <xs:sequence>
      </xs:sequence>
      <xs:attribute name="PerformanceId" type="clr:guid" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPerformanceResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Performance" type="dc:Performance" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetNewsCategoriesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="NewsCategories" type="dc:NewsCategory" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateNewsCategoryRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="NewsCategory" type="dc:NewsCategory" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateNewsCategoryRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="NewsCategory" type="dc:NewsCategory" minOccurs="1" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteNewsCategoryRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="NewsCategoryId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetNewsItemsByCategoryNumbersRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="CategoryNumbers" type="xs:int" maxOccurs="unbounded" minOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPerformancesOfMovieRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MovieId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPerformancesOfRoomRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="RoomId" type="clr:guid" />
        <xs:element name="StartDate" type="xs:dateTime" />
        <xs:element name="EndDate" type="xs:dateTime" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetMoviesByNameRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MovieName" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetTicketRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="TicketId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetUndispatchedTicketsRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="TicketCode" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetUndispatchedTicketsByUserIdRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="UserId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetTicketResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Ticket" type="dc:Ticket" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="LogOnRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="UserName" type="xs:string" />
        <xs:element name="Password" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="LogOnResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="User" type="dc:User" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ChangePasswordRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="CurrentPassword" type="xs:string" />
        <xs:element name="NewPassword" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="BuyTicketsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="TicketCode" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateGenreRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Genre" type="dc:Genre" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateGenreRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Genre" type="dc:Genre" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteGenreRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="GenreId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAllGenresResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Genres" type="dc:Genre" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateCountryRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Country" type="dc:Country" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateCountryRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Country" type="dc:Country" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteCountryRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="CountryId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAllCountriesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Countries" type="dc:Country" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateDistributorRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Distributor" type="dc:Distributor" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateDistributorRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Distributor" type="dc:Distributor" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteDistributorRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="DistributorId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAllDistributorsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Distributors" type="dc:Distributor" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CreateParentalGuidanceRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ParentalGuidance" type="dc:ParentalGuidance" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdateParentalGuidanceRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ParentalGuidance" type="dc:ParentalGuidance" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeleteParentalGuidanceRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ParentalGuidanceId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetAllParentalGuidancesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ParentalGuidances" type="dc:ParentalGuidance" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CreatePersonRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Person" type="dc:Person" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="UpdatePersonRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Person" type="dc:Person" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DeletePersonRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="PersonId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPersonsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Persons" type="dc:Person" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPersonByNameRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Name" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetCurrentUserResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="CurrentUser" type="dc:User" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SellTicketsRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="PerformanceId" type="clr:guid" />
        <xs:element name="Quantity" type="xs:int" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ResetPasswordRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="UserName" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetUndispatchedTicketsResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Tickets" type="dc:Ticket" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="MarkTicketAsDispatchedRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="TicketId" type="clr:guid" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPerformancesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Performances" type="dc:PerformanceInfo" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="GetPerformancesRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="StartDate" type="xs:dateTime" />
        <xs:element name="EndDate" type="xs:dateTime" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>